// Copyright 2022 jeff.li. and/or its affiliates.

#pragma once

#include <map>
#include <vector>

#include <tbir/pipeline/op_kernel.h>

namespace tbir::runtime {

    class PythonBaseOp : public OpKernel {
    public:
        void Init() override;

        RTValue Process(PyArgs inputs) const override;

    public:
        String py_op_name;     // py op name, for debug
        String pass_op_name;   // op class name, shouldn't be empty
        Dict pass_op_options;  // json, shouldn't be empty
        ska::flat_hash_map<String, std::vector<String>> sub_op_deps;
        NativeFunction py_callable;
    };

}  // namespace tbir::runtime
